<!DOCTYPE html>
<html lang="zh-CN">





<head>
  <meta charset="UTF-8">
  <link rel="apple-touch-icon" sizes="76x76" href="/img/favicon.png">
  <link rel="icon" type="image/png" href="/img/favicon.png">
  <meta name="viewport"
        content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  
  <meta name="theme-color" content="#2f4154">
  <meta name="description" content="机器学习，深度学习，强化学习，算法，Linux">
  <meta name="author" content="seven">
  <meta name="keywords" content="">
  <title>机器学习-梯度下降 - SimpleAI</title>

  <link  rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.4.1/css/bootstrap.min.css" />
<link  rel="stylesheet" href="https://cdn.staticfile.org/github-markdown-css/4.0.0/github-markdown.min.css" />


  <link  rel="stylesheet" href="https://cdn.staticfile.org/highlight.js/10.0.0/styles/github-gist.min.css" />


<!-- 主题依赖的图标库，不要自行修改 -->

<link rel="stylesheet" href="//at.alicdn.com/t/font_1749284_fmb4a04yx8h.css">



<link rel="stylesheet" href="//at.alicdn.com/t/font_1736178_pjno9b9zyxs.css">




<link  rel="stylesheet" href="/css/main.css" />

<!-- 自定义样式保持在最底部 -->


<meta name="generator" content="Hexo 4.2.1"></head>


<body>
  <header style="height: 70vh;">
    <nav id="navbar" class="navbar fixed-top  navbar-expand-lg navbar-dark scrolling-navbar">
  <div class="container">
    <a class="navbar-brand"
       href="/">&nbsp;<strong>Simple AI</strong>&nbsp;</a>

    <button id="navbar-toggler-btn" class="navbar-toggler" type="button" data-toggle="collapse"
            data-target="#navbarSupportedContent"
            aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <div class="animated-icon"><span></span><span></span><span></span></div>
    </button>

    <!-- Collapsible content -->
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav ml-auto text-center">
        
          
          
          
          <li class="nav-item">
            <a class="nav-link" href="/">
              <i class="iconfont icon-home-fill"></i>
              首页</a>
          </li>
        
          
          
          
          <li class="nav-item">
            <a class="nav-link" href="/archives/">
              <i class="iconfont icon-archive-fill"></i>
              归档</a>
          </li>
        
          
          
          
          <li class="nav-item">
            <a class="nav-link" href="/categories/">
              <i class="iconfont icon-category-fill"></i>
              分类</a>
          </li>
        
          
          
          
          <li class="nav-item">
            <a class="nav-link" href="/tags/">
              <i class="iconfont icon-tags-fill"></i>
              标签</a>
          </li>
        
          
          
          
          <li class="nav-item">
            <a class="nav-link" href="/about/">
              <i class="iconfont icon-user-fill"></i>
              关于</a>
          </li>
        
        
          <li class="nav-item" id="search-btn">
            <a class="nav-link" data-toggle="modal" data-target="#modalSearch">&nbsp;&nbsp;<i
                class="iconfont icon-search"></i>&nbsp;&nbsp;</a>
          </li>
        
      </ul>
    </div>
  </div>
</nav>

    <div class="view intro-2" id="background" parallax=true
         style="background: url('/img/default.png') no-repeat center center;
           background-size: cover;">
      <div class="full-bg-img">
        <div class="mask flex-center" style="background-color: rgba(0, 0, 0, 0.3)">
          <div class="container text-center white-text fadeInUp">
            <span class="h2" id="subtitle">
              
            </span>

            
              
                <div class="mt-3 post-meta">
                  <i class="iconfont icon-date-fill" aria-hidden="true"></i>
                  <time datetime="2018-07-25 10:00">
                    2018年7月25日 上午
                  </time>
                </div>
              

              <div class="mt-1">
                
                  
                  <span class="post-meta mr-2">
                    <i class="iconfont icon-chart"></i>
                    1.7k 字
                  </span>
                

                
                  
                  <span class="post-meta mr-2">
                      <i class="iconfont icon-clock-fill"></i>
                    
                    
                    19
                     分钟
                  </span>
                

                
                  <!-- 不蒜子统计文章PV -->
                  
                  <span id="busuanzi_container_page_pv" class="post-meta" style="display: none">
                    <i class="iconfont icon-eye" aria-hidden="true"></i>
                    <span id="busuanzi_value_page_pv"></span> 次
                  </span>
                
              </div>
            
          </div>

          
        </div>
      </div>
    </div>
  </header>

  <main>
    
      

<div class="container-fluid">
  <div class="row">
    <div class="d-none d-lg-block col-lg-2"></div>
    <div class="col-lg-8 nopadding-md">
      <div class="container nopadding-md" id="board-ctn">
        <div class="py-5" id="board">
          <div class="post-content mx-auto" id="post">
            
              <p class="note note-info">
                
                  本文最后更新于：2 小时前
                
              </p>
            
            <article class="markdown-body">
              <h3 id="优化与机器学习"><a href="#优化与机器学习" class="headerlink" title="优化与机器学习"></a>优化与机器学习</h3><h4 id="机器学习的主要任务之一就是通过训练，学习获得一组最优的参数，我们经常以成本函数来作为参数估计的函数。所以机器学习的任务也就是最小成本函数。"><a href="#机器学习的主要任务之一就是通过训练，学习获得一组最优的参数，我们经常以成本函数来作为参数估计的函数。所以机器学习的任务也就是最小成本函数。" class="headerlink" title="机器学习的主要任务之一就是通过训练，学习获得一组最优的参数，我们经常以成本函数来作为参数估计的函数。所以机器学习的任务也就是最小成本函数。"></a>机器学习的主要任务之一就是通过训练，学习获得一组最优的参数，我们经常以<strong>成本函数</strong>来作为参数估计的函数。所以机器学习的任务也就是最小成本函数。</h4><h4 id="优化也是机器学习算法的非常重要的组成部分，基本上每一个机器学习算法都有一个优化算法"><a href="#优化也是机器学习算法的非常重要的组成部分，基本上每一个机器学习算法都有一个优化算法" class="headerlink" title="优化也是机器学习算法的非常重要的组成部分，基本上每一个机器学习算法都有一个优化算法"></a>优化也是机器学习算法的非常重要的组成部分，基本上每一个机器学习算法都有一个优化算法</h4><h3 id="梯度下降方法"><a href="#梯度下降方法" class="headerlink" title="梯度下降方法"></a>梯度下降方法</h3><h4 id="用负梯度作搜索方向，即令-bigtriangleup-x-bigtriangledown-f-x-是一种自然的选择。相应的方法就称梯度方法或者梯度下降方法。"><a href="#用负梯度作搜索方向，即令-bigtriangleup-x-bigtriangledown-f-x-是一种自然的选择。相应的方法就称梯度方法或者梯度下降方法。" class="headerlink" title="用负梯度作搜索方向，即令$\bigtriangleup x=-\bigtriangledown f(x)$, 是一种自然的选择。相应的方法就称梯度方法或者梯度下降方法。"></a>用负梯度作搜索方向，即令<strong>$\bigtriangleup x=-\bigtriangledown f(x)$</strong>, 是一种自然的选择。相应的方法就称梯度方法或者梯度下降方法。</h4><h3 id="梯度下降算法的概念"><a href="#梯度下降算法的概念" class="headerlink" title="梯度下降算法的概念"></a>梯度下降算法的概念</h3><p><strong>梯度下降算法</strong>就是一个被广泛使用的优化算法, 它可以用于寻找<strong>最小化成本函数</strong>的参数值. 也就是说: <em>当函数 $$J(\theta)$$</em> 取得最小值时, 求所对应的自变量<strong>$\theta$</strong>的过程， 此处<strong>$\theta$</strong>就是机器要学习的参数，$$J(\theta)$$ 就是用于参数估计的成本函数, 是关于$$\theta$$ 的函数. </p>
<h3 id="梯度下降的基本步骤"><a href="#梯度下降的基本步骤" class="headerlink" title="梯度下降的基本步骤"></a>梯度下降的基本步骤</h3><p>梯度下降法的计算过程就是沿梯度下降的方向求解极小值（也可以沿梯度上升方向求解极大值） </p>
<hr>
<h5 id="给定-初始点-x-in-dom-f"><a href="#给定-初始点-x-in-dom-f" class="headerlink" title="给定 初始点 $x \in dom f $"></a>给定 初始点 $x \in dom f $</h5><h5 id="重复进行："><a href="#重复进行：" class="headerlink" title="重复进行："></a>重复进行：</h5><ol>
<li><h5 id="bigtriangleup-x-bigtriangledown-f-x"><a href="#bigtriangleup-x-bigtriangledown-f-x" class="headerlink" title="$\bigtriangleup x :=-\bigtriangledown f(x)$"></a>$\bigtriangleup x :=-\bigtriangledown f(x)$</h5></li>
<li><h5 id="直线搜索。通过精确或回溯直线搜索方法确实步长-t"><a href="#直线搜索。通过精确或回溯直线搜索方法确实步长-t" class="headerlink" title="直线搜索。通过精确或回溯直线搜索方法确实步长$t$."></a>直线搜索。通过精确或回溯直线搜索方法确实步长$t$.</h5></li>
<li><h5 id="修改-x-x-t-bigtriangleup-x"><a href="#修改-x-x-t-bigtriangleup-x" class="headerlink" title="修改 :$x :=x+t\bigtriangleup x$."></a>修改 :$x :=x+t\bigtriangleup x$.</h5><h4 id="直到：满足停止准则。"><a href="#直到：满足停止准则。" class="headerlink" title="直到：满足停止准则。"></a>直到：满足停止准则。</h4></li>
</ol>
<hr>
<h4 id="换种方式："><a href="#换种方式：" class="headerlink" title="换种方式："></a>换种方式：</h4><ol>
<li>对成本函数进行微分, 得到其在给定点的梯度. 梯度的正负指示了成本函数值的上升或下降:$ Δ(\theta)=\frac{∂J(\theta)}{∂\theta}$  </li>
<li>选择使成本函数值减小的方向, 即梯度负方向, 乘以学习率为 α 计算得参数的更新量, 并更新参数:<strong>$\theta=\theta−αΔ(\theta)  $</strong></li>
<li>重复以上步骤, 直到取得最小的成本</li>
</ol>
<hr>
<h3 id="批量梯度下降法（Batch-Gradient-Descent）"><a href="#批量梯度下降法（Batch-Gradient-Descent）" class="headerlink" title="批量梯度下降法（Batch Gradient Descent）"></a>批量梯度下降法（Batch Gradient Descent）</h3><p>　批量梯度下降法，是梯度下降法最常用的形式，具体做法也就是在更新参数时使用所有的样本来进行更新，这个方法对应于<a href="https://sevenold.github.io/2018/07/ml-linearRegression/" target="_blank" rel="noopener">线性回归的梯度下降算法</a>，也就是说线性回归的梯度下降算法就是批量梯度下降法。　　 </p>
<h4 id="具体实现过程："><a href="#具体实现过程：" class="headerlink" title="具体实现过程："></a>具体实现过程：</h4><hr>
<ol>
<li><h5 id="假设函数：-h-theta-sum-i-1-n-theta-ix-i"><a href="#假设函数：-h-theta-sum-i-1-n-theta-ix-i" class="headerlink" title="假设函数：$h_\theta = \sum_{i=1}^n\theta_ix_i$"></a>假设函数：$h_\theta = \sum_{i=1}^n\theta_ix_i$</h5></li>
<li><h5 id="成本函数：-J-theta-frac-1-2m-sum-i-1-n-h-theta-x-i-y-i-2"><a href="#成本函数：-J-theta-frac-1-2m-sum-i-1-n-h-theta-x-i-y-i-2" class="headerlink" title="成本函数：$J(\theta)=\frac{1}{2m} \sum_{i=1}^n(h_\theta(x_i)-y_i)^2$"></a>成本函数：$J(\theta)=\frac{1}{2m} \sum_{i=1}^n(h_\theta(x_i)-y_i)^2$</h5></li>
<li><h5 id="对成本函数进行求偏导：对每一个参数-theta-j-进行分别求偏导，得出各自的梯度。"><a href="#对成本函数进行求偏导：对每一个参数-theta-j-进行分别求偏导，得出各自的梯度。" class="headerlink" title="对成本函数进行求偏导：对每一个参数$\theta_j$进行分别求偏导，得出各自的梯度。"></a>对成本函数进行求偏导：对每一个参数$\theta_j$进行分别求偏导，得出各自的梯度。</h5><h4 id="frac-partial-J-theta-partial-theta-frac1-m-sum-i-1-n-y-i-h-theta-x-i-x-j-i"><a href="#frac-partial-J-theta-partial-theta-frac1-m-sum-i-1-n-y-i-h-theta-x-i-x-j-i" class="headerlink" title="$\frac{\partial J(\theta)}{\partial  \theta}=-\frac1 m  \sum_{i=1}^n(y_i-h_\theta(x_i))x_j^i$"></a>$\frac{\partial J(\theta)}{\partial  \theta}=-\frac1 m  \sum_{i=1}^n(y_i-h_\theta(x_i))x_j^i$</h4></li>
<li><h5 id="每个参数都按照梯度的负方向进行更新："><a href="#每个参数都按照梯度的负方向进行更新：" class="headerlink" title="每个参数都按照梯度的负方向进行更新："></a>每个参数都按照梯度的负方向进行更新：</h5><h4 id="theta-j-theta-j-frac-a-m-sum-i-1-n-y-i-h-theta-x-i-x-j-i"><a href="#theta-j-theta-j-frac-a-m-sum-i-1-n-y-i-h-theta-x-i-x-j-i" class="headerlink" title="$\theta_j=\theta_j+\frac a m \sum_{i=1}^n(y_i-h_\theta(x_i))x_j^i$"></a>$\theta_j=\theta_j+\frac a m \sum_{i=1}^n(y_i-h_\theta(x_i))x_j^i$</h4></li>
</ol>
<hr>
<h4 id="BGD伪代码："><a href="#BGD伪代码：" class="headerlink" title="BGD伪代码："></a>BGD伪代码：</h4><hr>
<h4 id="repeat"><a href="#repeat" class="headerlink" title="repeat{"></a>repeat{</h4><h4 id="theta-j-theta-j-frac-a-m-sum-i-1-n-y-i-h-theta-x-i-x-j-i-1"><a href="#theta-j-theta-j-frac-a-m-sum-i-1-n-y-i-h-theta-x-i-x-j-i-1" class="headerlink" title="$\theta_j=\theta_j+\frac a m \sum_{i=1}^n(y_i-h_\theta(x_i))x_j^i$"></a>$\theta_j=\theta_j+\frac a m \sum_{i=1}^n(y_i-h_\theta(x_i))x_j^i$</h4><h4 id="for-every-j-0-1-n"><a href="#for-every-j-0-1-n" class="headerlink" title="(for every j = 0, 1, .. n)"></a>(for every j = 0, 1, .. n)</h4><h4 id=""><a href="#" class="headerlink" title="}"></a>}</h4><hr>
<h4 id="总结："><a href="#总结：" class="headerlink" title="总结："></a>总结：</h4><p>优点：BGD 得到的是全局最优解, 因为它总是以整个训练集来计算梯度, </p>
<p>缺点：因此带来了巨大的计算量, 计算迭代速度很很慢. </p>
<h3 id="随机梯度下降法（Stochastic-Gradient-Descent）"><a href="#随机梯度下降法（Stochastic-Gradient-Descent）" class="headerlink" title="随机梯度下降法（Stochastic Gradient Descent）"></a>随机梯度下降法（Stochastic Gradient Descent）</h3><p>随机梯度下降法，其实和批量梯度下降法原理类似，区别在与求梯度时没有用所有的m个样本的数据，而是仅仅选取一个样本j来求梯度。 </p>
<h4 id="具体实现过程：-1"><a href="#具体实现过程：-1" class="headerlink" title="具体实现过程："></a>具体实现过程：</h4><p>SGD 每次以一个样本, 而不是整个数据集来计算梯度. 因此, SGD 从成本函数开始, 就不必再求和了, 针对单个样例的成本函数可以写成:  </p>
<h4 id="J-theta-frac-1-2-h-theta-x-i-y-i-2"><a href="#J-theta-frac-1-2-h-theta-x-i-y-i-2" class="headerlink" title="$J(\theta)=\frac{1}{2} (h_\theta(x_i)-y_i)^2$"></a>$J(\theta)=\frac{1}{2} (h_\theta(x_i)-y_i)^2$</h4><p>于是, SGD 的参数更新规则就可以写成 ：</p>
<h4 id="theta-j-theta-j-a-y-i-h-theta-x-i-x-j-i"><a href="#theta-j-theta-j-a-y-i-h-theta-x-i-x-j-i" class="headerlink" title="$\theta_j=\theta_j+a (y_i-h_\theta(x_i))x_j^i$"></a>$\theta_j=\theta_j+a (y_i-h_\theta(x_i))x_j^i$</h4><h4 id="SGD伪代码："><a href="#SGD伪代码：" class="headerlink" title="SGD伪代码："></a>SGD伪代码：</h4><hr>
<h4 id="repeat-1"><a href="#repeat-1" class="headerlink" title="repeat {     "></a>repeat {     </h4><h4 id="for-i-1-m"><a href="#for-i-1-m" class="headerlink" title="for i = 1, .., m{    "></a>for i = 1, .., m{    </h4><h4 id="theta-j-theta-j-a-y-i-h-theta-x-i-x-j-i-1"><a href="#theta-j-theta-j-a-y-i-h-theta-x-i-x-j-i-1" class="headerlink" title="               $\theta_j=\theta_j+a (y_i-h_\theta(x_i))x_j^i$"></a>               $\theta_j=\theta_j+a (y_i-h_\theta(x_i))x_j^i$</h4><h4 id="for-every-j-0-1-n-1"><a href="#for-every-j-0-1-n-1" class="headerlink" title="                     (for every j = 0, 1, .. n)    "></a>                     (for every j = 0, 1, .. n)    </h4><h4 id="-1"><a href="#-1" class="headerlink" title="}"></a>}</h4><h4 id="-2"><a href="#-2" class="headerlink" title="}"></a>}</h4><hr>
<h4 id="总结：-1"><a href="#总结：-1" class="headerlink" title="总结："></a>总结：</h4><p>SGD 的关键点在于以随机顺序选取样本. 因为 SGD 存在局部最优困境, 若每次都以相同的顺序选取样本, 其有很大的可能会在相同的地方陷入局部最优解困境, 或者收敛减缓. 因此, 欲使 SGD 发挥更好的效果, 应充分利用<strong>随机化</strong> 带来的优势: 可以*<em>在每次迭代之前 (伪代码中最外围循环), 对训练集进行随机排列. *</em></p>
<p>缺点：因为每次只取一个样本来进行梯度下降, SGD 的训练<strong>速度很快</strong>, 但会引入噪声, 使准确度下降</p>
<p>优点：.  可以使用<strong>在线学习</strong>. 也就是说, 在模型训练好之后, 只要有新的数据到来, 模型都可以利用新的数据进行再学习, 更新参数,以适应新的变化. </p>
<h3 id="对比"><a href="#对比" class="headerlink" title="对比"></a>对比</h3><p><strong>随机梯度下降法和批量梯度下降法</strong>是两个极端，一个采用所有数据来梯度下降，一个用一个样本来梯度下降。自然各自的优缺点都非常突出。对于训练速度来说，随机梯度下降法由于每次仅仅采用一个样本来迭代，训练速度很快，而批量梯度下降法在样本量很大的时候，训练速度不能让人满意。对于准确度来说，随机梯度下降法用于仅仅用一个样本决定梯度方向，导致解很有可能不是最优。对于收敛速度来说，由于随机梯度下降法一次迭代一个样本，导致迭代方向变化很大，不能很快的收敛到局部最优解。 </p>
<h4 id="MBGD就综合了这两种方法的优点。"><a href="#MBGD就综合了这两种方法的优点。" class="headerlink" title="MBGD就综合了这两种方法的优点。"></a>MBGD就综合了这两种方法的优点。</h4><h3 id="小批量梯度下降法（Mini-batch-Gradient-Descent）"><a href="#小批量梯度下降法（Mini-batch-Gradient-Descent）" class="headerlink" title="小批量梯度下降法（Mini-batch Gradient Descent）"></a>小批量梯度下降法（Mini-batch Gradient Descent）</h3><p>MBGD 是为解决 BGD 与 SGD 各自缺点而发明的折中算法, 或者说它利用了 BGD 和 SGD 各自优点. 其基本思想是: <em>每次更新参数时, 使用 n 个样本, 既不是全部, 也不是 1.</em> (SGD 可以看成是 n=1 的 MBGD 的一个特例) </p>
<h4 id="MBGD-的成本函数或其求导公式或参数更新规则公式基本同-BGD-。"><a href="#MBGD-的成本函数或其求导公式或参数更新规则公式基本同-BGD-。" class="headerlink" title="MBGD 的成本函数或其求导公式或参数更新规则公式基本同 BGD 。"></a>MBGD 的成本函数或其求导公式或参数更新规则公式基本同 BGD 。</h4><h4 id="MBGD-的伪代码："><a href="#MBGD-的伪代码：" class="headerlink" title="MBGD 的伪代码："></a>MBGD 的伪代码：</h4><hr>
<h4 id="say-b-10-m-1000"><a href="#say-b-10-m-1000" class="headerlink" title="say b=10, m=1000,"></a>say b=10, m=1000,</h4><h4 id="repeat-2"><a href="#repeat-2" class="headerlink" title="repeat {     "></a>repeat {     </h4><h4 id="for-i-1-11-21-991"><a href="#for-i-1-11-21-991" class="headerlink" title="for i = 1, 11, 21, .., 991 {"></a>for i = 1, 11, 21, .., 991 {</h4><h4 id="theta-j-theta-j-frac-a-10-sum-i-1-i-9-y-i-h-theta-x-i-x-j-i"><a href="#theta-j-theta-j-frac-a-10-sum-i-1-i-9-y-i-h-theta-x-i-x-j-i" class="headerlink" title="$\theta_j=\theta_j+\frac a {10} \sum_{i=1}^{i+9}(y_i-h_\theta(x_i))x_j^i$"></a>$\theta_j=\theta_j+\frac a {10} \sum_{i=1}^{i+9}(y_i-h_\theta(x_i))x_j^i$</h4><h4 id="for-every-j-0-1-n-2"><a href="#for-every-j-0-1-n-2" class="headerlink" title=" (for every j = 0, 1, .. n)    "></a> (for every j = 0, 1, .. n)    </h4><h4 id="-3"><a href="#-3" class="headerlink" title=" }"></a> }</h4><h4 id="-4"><a href="#-4" class="headerlink" title="}"></a>}</h4><hr>
<h3 id="梯度下降算法总结"><a href="#梯度下降算法总结" class="headerlink" title="梯度下降算法总结"></a>梯度下降算法总结</h3><table>
<thead>
<tr>
<th>梯度下降算法</th>
<th>优点</th>
<th>缺点</th>
</tr>
</thead>
<tbody><tr>
<td>BGD</td>
<td>全局最优解</td>
<td>计算量大, 迭代速度慢, 训练速度慢</td>
</tr>
<tr>
<td>SGD</td>
<td>1.训练速度快 ,对于很大的数据集，也能以较快的速度收敛                                                                        2. 支持在线学习</td>
<td>准确度下降, 有噪声, 非全局最优解</td>
</tr>
<tr>
<td>MBGD</td>
<td>1. 训练速度较快, 取决于小批量的数目                                            2. 支持在线学习</td>
<td>准确度不如 BGD, 速度比SGD慢，仍然有噪声, 非全局最优解</td>
</tr>
</tbody></table>

            </article>
            <hr>
            <div>
              <div class="post-metas mb-3">
                
                  <div class="post-meta mr-3">
                    <i class="iconfont icon-category"></i>
                    
                      <a class="hover-with-bg" href="/categories/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/">机器学习</a>
                    
                  </div>
                
                
                  <div class="post-meta">
                    <i class="iconfont icon-tags"></i>
                    
                      <a class="hover-with-bg" href="/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/">机器学习</a>
                    
                      <a class="hover-with-bg" href="/tags/%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D%EF%BC%8C%E4%BC%98%E5%8C%96%E7%AE%97%E6%B3%95/">梯度下降，优化算法</a>
                    
                  </div>
                
              </div>
              
                <p class="note note-warning">本博客所有文章除特别声明外，均采用 <a href="https://zh.wikipedia.org/wiki/Wikipedia:CC_BY-SA_3.0%E5%8D%8F%E8%AE%AE%E6%96%87%E6%9C%AC" target="_blank" rel="nofollow noopener noopener">CC BY-SA 3.0协议</a> 。转载请注明出处！</p>
              
              
                <div class="post-prevnext row">
                  <div class="post-prev col-6">
                    
                    
                      <a href="/2018/07/26/2018-07-25-ml-svm/">
                        <i class="iconfont icon-arrowleft"></i>
                        <span class="hidden-mobile">机器学习-支持向量机</span>
                        <span class="visible-mobile">上一篇</span>
                      </a>
                    
                  </div>
                  <div class="post-next col-6">
                    
                    
                      <a href="/2018/07/24/2018-07-23-ml-logisticRegression/">
                        <span class="hidden-mobile">机器学习-逻辑回归</span>
                        <span class="visible-mobile">下一篇</span>
                        <i class="iconfont icon-arrowright"></i>
                      </a>
                    
                  </div>
                </div>
              
            </div>

            
              <!-- Comments -->
              <div class="comments" id="comments">
                
                
  <script defer src="https://utteranc.es/client.js"
          repo="sevenold/blog_comments"
          issue-term="pathname"
  
          label="utterances"
    
          theme="github-dark"
          crossorigin="anonymous"
  >
  </script>


              </div>
            
          </div>
        </div>
      </div>
    </div>
    
      <div class="d-none d-lg-block col-lg-2 toc-container" id="toc-ctn">
        <div id="toc">
  <p class="toc-header"><i class="iconfont icon-list"></i>&nbsp;目录</p>
  <div id="tocbot"></div>
</div>

      </div>
    
  </div>
</div>

<!-- Custom -->


    
  </main>

  
    <a id="scroll-top-button" href="#" role="button">
      <i class="iconfont icon-arrowup" aria-hidden="true"></i>
    </a>
  

  
    <div class="modal fade" id="modalSearch" tabindex="-1" role="dialog" aria-labelledby="ModalLabel"
     aria-hidden="true">
  <div class="modal-dialog modal-dialog-scrollable modal-lg" role="document">
    <div class="modal-content">
      <div class="modal-header text-center">
        <h4 class="modal-title w-100 font-weight-bold">搜索</h4>
        <button type="button" id="local-search-close" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body mx-3">
        <div class="md-form mb-5">
          <input type="text" id="local-search-input" class="form-control validate">
          <label data-error="x" data-success="v"
                 for="local-search-input">关键词</label>
        </div>
        <div class="list-group" id="local-search-result"></div>
      </div>
    </div>
  </div>
</div>
  

  

  

  <footer class="mt-5">
  <div class="text-center py-3">
    <div>
      <a href="https://ai-club.gitee.io" target="_blank" rel="nofollow noopener"><span>Seven</span></a>
      <i class="iconfont icon-love"></i>
      <a href="https://ai-club.gitee.io" target="_blank" rel="nofollow noopener"><span>算法</span></a>
    </div>
    
  <div>
    
      <!-- 不蒜子统计PV -->
      
      <span id="busuanzi_container_site_pv" style="display: none">
      总访问量 <span id="busuanzi_value_site_pv"></span> 次
    </span>
    
    
      <!-- 不蒜子统计UV -->
      
      <span id="busuanzi_container_site_uv" style="display: none">
      总访客数 <span id="busuanzi_value_site_uv"></span> 人
    </span>
    
  </div>


    

    
  </div>
</footer>

<!-- SCRIPTS -->
<script  src="https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js" ></script>
<script  src="https://cdn.staticfile.org/twitter-bootstrap/4.4.1/js/bootstrap.min.js" ></script>
<script  src="/js/main.js" ></script>


  <script  src="/js/lazyload.js" ></script>



  
  <script  src="https://cdn.staticfile.org/tocbot/4.11.1/tocbot.min.js" ></script>
  <script>
    $(document).ready(function () {
      var boardCtn = $('#board-ctn');
      var boardTop = boardCtn.offset().top;

      tocbot.init({
        tocSelector: '#tocbot',
        contentSelector: '.post-content',
        headingSelector: 'h1,h2,h3,h4,h5,h6',
        linkClass: 'tocbot-link',
        activeLinkClass: 'tocbot-active-link',
        listClass: 'tocbot-list',
        isCollapsedClass: 'tocbot-is-collapsed',
        collapsibleClass: 'tocbot-is-collapsible',
        collapseDepth: 0,
        scrollSmooth: true,
        headingsOffset: -boardTop
      });
      if ($('.toc-list-item').length > 0) {
        $('#toc').css('visibility', 'visible');
      }
    });
  </script>





  <script defer src="https://cdn.staticfile.org/clipboard.js/2.0.6/clipboard.min.js" ></script>
  <script  src="/js/clipboard-use.js" ></script>



  <script defer src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js" ></script>




<!-- Plugins -->


  
    <!-- Baidu Analytics -->
    <script defer>
      var _hmt = _hmt || [];
      (function () {
        var hm = document.createElement("script");
        hm.src = "https://hm.baidu.com/hm.js?148e1083cf73cfd11f7ffaae0cd55877";
        var s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(hm, s);
      })();
    </script>
  

  

  

  

  

  



  <script  src="https://cdn.staticfile.org/typed.js/2.0.11/typed.min.js" ></script>
  <script>
    var typed = new Typed('#subtitle', {
      strings: [
        '  ',
        "机器学习-梯度下降&nbsp;",
      ],
      cursorChar: "_",
      typeSpeed: 70,
      loop: false,
    });
    typed.stop();
    $(document).ready(function () {
      $(".typed-cursor").addClass("h2");
      typed.start();
    });
  </script>



  <script  src="https://cdn.staticfile.org/anchor-js/4.2.2/anchor.min.js" ></script>
  <script>
    anchors.options = {
      placement: "right",
      visible: "hover",
      
    };
    var el = "h1,h2,h3,h4,h5,h6".split(",");
    var res = [];
    for (item of el) {
      res.push(".markdown-body > " + item)
    }
    anchors.add(res.join(", "))
  </script>



  <script  src="/js/local-search.js" ></script>
  <script>
    var path = "/local-search.xml";
    var inputArea = document.querySelector("#local-search-input");
    inputArea.onclick = function () {
      searchFunc(path, 'local-search-input', 'local-search-result');
      this.onclick = null
    }
  </script>



  <script  src="https://cdn.staticfile.org/fancybox/3.5.7/jquery.fancybox.min.js" ></script>
  <link  rel="stylesheet" href="https://cdn.staticfile.org/fancybox/3.5.7/jquery.fancybox.min.css" />

  <script>
    $('#post img:not(.no-zoom img, img[no-zoom]), img[zoom]').each(
      function () {
        var element = document.createElement('a');
        $(element).attr('data-fancybox', 'images');
        $(element).attr('href', $(this).attr('src'));
        $(this).wrap(element);
      }
    );
  </script>





  

  
    <!-- MathJax -->
    <script>
      MathJax = {
        tex: {
          inlineMath: [['$', '$'], ['\\(', '\\)']]
        },
        options: {
          renderActions: {
            findScript: [10, doc => {
              document.querySelectorAll('script[type^="math/tex"]').forEach(node => {
                const display = !!node.type.match(/; *mode=display/);
                const math = new doc.options.MathItem(node.textContent, doc.inputJax[0], display);
                const text = document.createTextNode('');
                node.parentNode.replaceChild(text, node);
                math.start = { node: text, delim: '', n: 0 };
                math.end = { node: text, delim: '', n: 0 };
                doc.math.push(math);
              });
            }, '', false],
            insertedScript: [200, () => {
              document.querySelectorAll('mjx-container').forEach(node => {
                let target = node.parentNode;
                if (target.nodeName.toLowerCase() === 'li') {
                  target.parentNode.classList.add('has-jax');
                }
              });
            }, '', false]
          }
        }
      };
    </script>

    <script async src="https://cdn.staticfile.org/mathjax/3.0.5/es5/tex-svg.js" ></script>

  














</body>
</html>
